package com.king.oa.util;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import com.king.oa.domain.Department;

public class DepartmentUtil {

	
	/**
	 * 遍历部门树，吧所有的部门遍历出来放到同一个集合中返回，
	 * 并且其中所有部门的名称都修改了，突出层次。
	 * 
	 * @param toList
	 * @return
	 */
	public static List<Department> getAllDepartments(List<Department> toList) {
		List<Department> list = new ArrayList<>();
		walkDepartmentTreeList(toList,list,"├");
		return list;
	}

	
	/**
	 * 遍历部门树,把遍历出的部门信息放到指定的集合中
	 * @param toList
	 */
	private static void walkDepartmentTreeList(Collection<Department> toList, List<Department> list, String prefix){
		for(Department top : toList){
			//顶点
			Department copy = new Department();//使用副本，因为原对象在Session事务中
			copy.setId(top.getId());
			copy.setName(prefix+top.getName());
			list.add(copy); //把副本添加到同一个集合
			//子树
			walkDepartmentTreeList(top.getChildren(),list,"　"+prefix);//使用全角输入空格
		}
	}
	
}
